summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/core/hle/service/am/applet_manager.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/core/hle/service/am/applet_manager.cpp b/src/core/hle/service/am/applet_manager.cpp
index a733525a2..52200d5b2 100644
--- a/src/core/hle/service/am/applet_manager.cpp
+++ b/src/core/hle/service/am/applet_manager.cpp
@@ -221,6 +221,7 @@ void AppletManager::InsertApplet(std::shared_ptr<Applet> applet) {
void AppletManager::TerminateAndRemoveApplet(AppletResourceUserId aruid) {
std::shared_ptr<Applet> applet;
+ bool should_stop = false;
{
std::scoped_lock lk{m_lock};
@@ -231,10 +232,17 @@ void AppletManager::TerminateAndRemoveApplet(AppletResourceUserId aruid) {
applet = it->second;
m_applets.erase(it);
+
+ should_stop = m_applets.empty();
}
// Terminate process.
applet->process->Terminate();
+
+ // If there were no applets left, stop emulation.
+ if (should_stop) {
+ m_system.Exit();
+ }
}
void AppletManager::CreateAndInsertByFrontendAppletParameters(